home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - ProDOS
/
PRO040.dsk
/
UTILS
/
PRINTER.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
5KB
|
195 lines
10 D$ = CHR$(4)
20 PRINT CHR$(27);: PRINT CHR$(17): REM 40 COL.
30 TEXT : HOME
40 V = 1: GOSUB 50:V = 24: GOSUB 50: GOTO 70
50 VTAB (V): HTAB (1): FOR X = 1 TO 39: PRINT "_";: NEXT
60 RETURN
70 VTAB (5): HTAB (7)
80 PRINT "[ THIS PROGRAM IS FREEWARE ]"
90 PRINT : PRINT : HTAB (4)
100 PRINT "YOU ARE FREE TO DISTRIBUTE COPIES"
110 PRINT : HTAB (8)
120 PRINT "BUT YOU MAY NOT SELL THEM."
130 VTAB (18): HTAB (11)
140 PRINT "THE FREEWARE PROJECT"
150 PRINT : HTAB (11)
160 PRINT "WALDEN SOFTWARE, INC."
170 PRINT : HTAB (12)
180 PRINT "(C) 1984, P. LUTUS"
190 FOR PAUSE = 0 TO 2500: NEXT
200 REM
210 REM SET UP PRINTER PROGRAM
220 REM
230 DIM M$(1,7)
240 DIM V(1,3)
250 V(0,0) = PEEK(48688):V(0,1) = PEEK(48689)
260 FOR X = 0 TO 7
270 READ M$(0,X): READ M$(1,X)
280 NEXT X
290 REM
300 REM INSTALL ERASER
310 REM
320 A = 768
330 READ B
340 POKE A,B
350 A = A +1
360 IF B < >96 THEN 330
370 REM
380 REM TAKE USER'S INPUTS
390 REM
400 PRINT CHR$(27); CHR$(17)
410 FOR X = 0 TO 7
420 HOME
430 PRINT "*** Prepare for Printing ***";
440 GOSUB 780
450 Q$ = M$(1,X)
460 INPUT "";L$
470 IF X = 2 THEN 490
480 IF L$ = "" THEN L$ = M$(1,X)
490 IF X < >0 THEN 550
500 IF L$ < >"?" THEN 540
510 HOME
520 PRINT D$;"CAT,TTXT,D1"
530 GOTO 440
540 IF L$ = "Q" OR L$ = "q" THEN HOME : PRINT CHR$(4);"-/IAC.43/STARTUP"
550 IF X < >2 THEN 680
560 IF L$ < >"?" THEN 680
570 HOME
580 PRINT "The (optional) Top Line entry is placed"
590 PRINT "at the top of each page. If you include"
600 PRINT "a '#' in your entry, the page number"
610 PRINT "will be printed at that location."
620 PRINT "Example: 'Page #' will be printed as"
630 PRINT "'Page 1' on the first page, 'Page 2'"
640 PRINT "on the second, and so forth.": PRINT
650 INPUT "(Press Return) :";L$
660 HOME
670 GOTO 440
680 M$(1,X) = L$
690 NEXT X
700 HOME
710 PRINT "Here are your Selections :";
720 X = 7: GOSUB 780
730 PRINT : PRINT
740 INPUT "Are The Selections Okay (Yes/No) :";L$
750 GOSUB 860
760 IF C$ < >"Y" THEN 400
770 GOTO 1140
780 FOR Y = 0 TO X
790 PRINT : PRINT
800 PRINT M$(0,Y);" :";
810 H = PEEK(36)
820 PRINT M$(1,Y);
830 POKE 36,H
840 NEXT Y
850 RETURN
860 C$ = ""
870 IF L$ = "" THEN RETURN
880 C$ = LEFT$(L$,1)
890 C = ASC(C$)
900 IF C >96 THEN C = C -32
910 C$ = CHR$(C)
920 RETURN
930 REM
940 REM THESE ARE THE DEFAULT VALUES
950 REM
960 DATA "File Name(?=Catalog,Q=Quit)",""
970 DATA "Printer Slot (0=Screen)","1"
980 DATA "Top Line(?=Help)","- # -"
990 DATA "Left Margin","10"
1000 DATA "Right Margin","70"
1010 DATA "Number of Printed Lines","58"
1020 DATA "Page Length in Lines","66"
1030 DATA "Automatic Paper Feed","No"
1040 REM
1050 REM THIS SECTION PRINTS
1060 REM
1070 POKE (48688),V(Z,0): POKE (48689),V(Z,1)
1080 RETURN
1090 M = LM
1100 IF M = 0 THEN RETURN
1110 FOR X = 1 TO M
1120 PRINT " ";
1130 NEXT : RETURN
1140 PRINT D$;"PR#";M$(1,1)
1150 PRINT
1160 V(1,0) = PEEK(48688):V(1,1) = PEEK(48689)
1170 Z = 0: GOSUB 1070
1180 HOME
1190 PRINT "Loading "; CHR$(34);M$(1,0); CHR$(34)
1200 BA = PEEK(110) +1:BA = BA *256
1210 POKE 0,0
1220 POKE 1,( PEEK(110) +1)
1230 POKE 2,( PEEK(112) -1)
1240 CALL 768
1250 ONERR GOTO 1850
1260 PRINT D$;"BLOAD";M$(1,0);",A";BA;",TTXT,D1"
1270 POKE 216,0
1280 C$ = LEFT$(M$(1,7),1)
1290 SP = 1: IF C$ = "Y" OR C$ = "y" THEN SP = 0
1300 LM = VAL(M$(1,3))
1310 RM = VAL(M$(1,4))
1320 PL = VAL(M$(1,5))
1330 PI = VAL(M$(1,6))
1340 LL = RM -LM
1350 HOME
1360 PRINT "(Press 'ESC' to stop print)": PRINT
1370 INPUT "Press Return to Begin Printing :";L$
1380 Z = 1: GOSUB 1070
1390 P = 1
1400 IF SP = 0 THEN 1440
1410 Z = 0: GOSUB 1070
1420 PRINT CHR$(7): INPUT "Load paper then press Return :";L$
1430 Z = 1: GOSUB 1070
1440 L = 0
1450 IF M$(1,2) = "" THEN 1570
1460 L$ = M$(1,2)
1470 GOSUB 1090
1480 M = ((RM -LM) -( LEN(L$)))/2
1490 GOSUB 1110
1500 FOR X = 1 TO LEN(L$)
1510 C$ = MID$ (L$,X,1)
1520 IF C$ < >"#" THEN PRINT C$;
1530 IF C$ = "#" THEN PRINT P;
1540 NEXT X
1550 PRINT : PRINT
1560 L = L +2
1570 GOSUB 1090
1580 TL = LL -1
1590 X = 0
1600 Q = PEEK(BA +X)
1610 IF Q = 32 THEN TL = X
1620 IF Q = 0 OR Q = 13 THEN TL = X: GOTO 1640
1630 X = X +1: IF X <LL THEN 1600
1640 IF TL = 0 THEN 1720
1650 FOR X = 0 TO TL -1
1660 C = PEEK(BA +X)
1670 PRINT CHR$(C);
1680 NEXT
1690 IF TL < >LL -1 THEN 1720
1700 R = PEEK(BA +TL)
1710 IF R < >32 AND R < >13 THEN 1730
1720 TL = TL +1
1730 BA = BA +TL
1740 PRINT
1750 IF Q = 0 THEN 1820
1760 IF PEEK(49152) = 155 THEN 1820
1770 L = L +1
1780 IF L <PL THEN 1570
1790 IF L <PI THEN 1740
1800 P = P +1
1810 GOTO 1400
1820 Z = 0: GOSUB 1070
1830 POKE 49168,0
1840 GOTO 400
1850 POKE 216,0
1860 PRINT CHR$(7)
1870 PRINT "Error trying to load "; CHR$(34);M$(1,0); CHR$(34)
1880 PRINT
1890 INPUT "(Press Return) :";L$
1900 GOTO 400
1910 REM
1920 REM ERASER CODE
1930 REM
1940 DATA 169,0,168,145,0,200,208,251
1950 DATA 230,1,165,1,197,2,208,240,96